package com.sanjiahantang.youjiarole.module.common.models;

import android.content.Context;

import com.sanjiahantang.youjiarole.base.BaseBean;
import com.sanjiahantang.youjiarole.base.CallBack;
import com.sanjiahantang.youjiarole.module.common.beans.CustomerBean;
import com.sanjiahantang.youjiarole.module.common.beans.DataBean;
import com.sanjiahantang.youjiarole.module.common.beans.DutyBean;
import com.sanjiahantang.youjiarole.module.common.beans.HelpBean;
import com.sanjiahantang.youjiarole.module.common.beans.MessageBean;
import com.sanjiahantang.youjiarole.module.common.beans.MessageNoticeCountBean;
import com.sanjiahantang.youjiarole.module.common.beans.MessageUseNoticeBean;
import com.sanjiahantang.youjiarole.module.common.beans.PersonBean;
import com.sanjiahantang.youjiarole.module.common.beans.PersonGoodsBean;
import com.sanjiahantang.youjiarole.module.common.beans.StringBean;
import com.sanjiahantang.youjiarole.module.common.beans.UserBean;
import com.sanjiahantang.youjiarole.module.common.beans.UserOBean;
import com.sanjiahantang.youjiarole.module.complain.beans.ComplainBean;
import com.sanjiahantang.youjiarole.module.evaluate.beans.EvaGoodsBean;
import com.sanjiahantang.youjiarole.module.evaluate.beans.EvaServiceBean;
import com.sanjiahantang.youjiarole.module.me.address.beans.AddressBean;
import com.sanjiahantang.youjiarole.module.me.address.beans.AddressDetailBean;
import com.sanjiahantang.youjiarole.module.me.order.beans.OrderBean;
import com.sanjiahantang.youjiarole.module.me.order.beans.OrderListBean;
import com.sanjiahantang.youjiarole.module.me.scheme.beans.MeCaseOBean;
import com.sanjiahantang.youjiarole.module.me.scheme.beans.MeSchemeCaseListBean;
import com.sanjiahantang.youjiarole.module.me.scheme.beans.MeSchemeListBean;
import com.sanjiahantang.youjiarole.module.me.scheme.beans.SchemeBean;
import com.sanjiahantang.youjiarole.module.me.scheme.beans.SchemeListBean;
import com.sanjiahantang.youjiarole.module.money.beans.BankCardBean;

import java.util.List;
import java.util.Map;

/**
 * Created by zy on 2017/9/4.
 */

public interface IUserModel {
    void loadUserInfo(Context context, Map<String, String> params, CallBack<PersonBean> callBack);



    void getUserMessage(Context context, Map<String, String> params,CallBack<MessageBean> callBack);

    void getUseNoticeForCustomer(Context context, Map<String, Object> params,CallBack<MessageUseNoticeBean> callBack);

    void getSearchNoticeCountForCustomer (Context context, Map<String, String> params,CallBack<MessageNoticeCountBean> callBack);

    void loadServiceEvaData(Context context, CallBack<EvaServiceBean> callBack);

    void loadGoodsEvaData(Context context, CallBack<EvaGoodsBean> callBack);

    void loadMeComplainList(Context context, int type, CallBack<ComplainBean> callBack);

    void loadSchemeList(Context context, Map<String, String> params, CallBack<SchemeListBean> callBack);

    void loadSchemeDetail(Context context, Map<String, String> params, CallBack<SchemeBean> callBack);


    void loadSchemeListFirst(Context context, Map<String, Object> params, CallBack<MeSchemeListBean> callBack);


    void getAddressList(Context context, Map<String, String> params, CallBack<AddressBean> callBack);

    void deleteAddress(Context context, Map<String, String> params, CallBack<BaseBean> callBack);

    void saveAddress(Context context, Map<String, Object> params, CallBack<BaseBean> callBack);

    void loadAddressDetail(Context context, Map<String, String> params, CallBack<AddressDetailBean> callBack);

    void loadOrderList(Context context, Map<String, String> params, CallBack<OrderListBean> callBack);

    void getCreatedOrder(Context context, Map<String, String> params, CallBack<OrderBean> callBack);

    void editDefaultAddress(Context context, Map<String, Object> params, CallBack<BaseBean> callBack);

    void dopersonData(final Context context, Map<String, String> params, final CallBack<UserBean> callBack);



    void updatePerson(final Context context, Map<String, Object> params,final CallBack<StringBean> callBack);

    void updateUserDuty(final Context context, Map<String, String> params,final CallBack<DutyBean> callBack);

    void loadHelpList(Context context, Map<String, Object> param, CallBack<HelpBean> callBack);

    void loadHelpArticle(Context context, Map<String, String> param, CallBack<HelpBean.Item> callBack);

    //提取账户明细
    void LoadMoneyDetail(final Context context, Map<String, Object> params,final CallBack<UserOBean> callBack);
    //我的物料管理
    void MyMeteriaManager(final Context context, Map<String, String> params,final CallBack<PersonGoodsBean> callBack);
    //提取金额
    void WithdrawalsMoney(final Context context, Map<String, String> params,final CallBack<UserBean> callBack);
    //我的客户
    void LoadCustomerList(final Context context, Map<String, Object> params,final CallBack<CustomerBean> callBack);
    //我的项目合伙人
    void LoadCustomerMypartner(final Context context, Map<String, Object> params,final CallBack<UserOBean> callBack);
    //查询银行卡信息
    void CheckBankInfo(final Context context, Map<String, Object> params,final CallBack<BankCardBean.Card> callBack);
    //添加银行卡信息
    void AddbankInfo(final Context context, Map<String, Object> params,final CallBack<UserOBean> callBack);
    //查询银行卡列表
    void CheckBankListInfo(final Context context, Map<String, Object> params,final CallBack<BankCardBean.CardList> callBack);


    void findPassword(Context context, Map<String, String> params, CallBack<StringBean> callBack);
    //我的方案列表
    void loadSchemeCaseList(Context context, Map<String, String> params, CallBack<MeSchemeCaseListBean> callBack);
    //我的明细列表
    void loadSchemeCaseDetailList(Context context, Map<String, String> params, CallBack<MeCaseOBean> callBack);

    void UpdataProjectInfo(Context context, Map<String, String> map, CallBack<StringBean> callBack);

    void addRequireSubcontractInfoByProject(Context context, Map<String, Object> param, CallBack<BaseBean> callBack);

    void findMoneyRecordNumberInfo(Context context, Map<String, Object> param, CallBack<DataBean> callBack);

    void updateDefaultBankCard(Context context, Map<String, String> map, CallBack<BaseBean> callBack);
}
